EasyAR 运动融合

什么是 EasyAR 运动融合

EasyAR 运动融合是在存在运动跟踪设备时优化图像和物体跟踪的一种技术。

如果一个设备(手机、眼镜或头显)通过硬件或软件方案可以具有VIO能力,我们称其为运动跟踪设备。这些设备包括但不限于可以运行 EasyAR 运动跟踪 、 ARCore、ARKit、华为 AR Engine的设备,或具有VIO能力的眼镜比如Nreal Light。

EasyAR 运动跟踪可以让图像和物体跟踪摆脱抖动困扰,跟踪稳定,并且可以在离开相机视野之后继续跟踪。

如何使用 EasyAR 运动融合

有无运动融合的场景差异存在于 EasyAR AR Session 以及target上。如 从零创建可运行的工程 中所描述,你永远有两种方法来创建 AR Session。

使用预设创建 AR Session

可以使用 Image TrackingObject Tracking 中名字含有 Motion Fusion 的预设来创建运动融合的AR Session,

../_images/image_g7_4.png

逐节点创建 AR Session

你也可以逐节点创建运动融合的 AR Session。

首先使用 EasyAR Sense > AR Session (Preset) > AR Session (Empty) 创建一个空的 ARSession

../_images/image_g1_21.png

然后在session中添加 FrameSource 。为了使用运动融合,你需要一个表示运动跟踪设备的 FrameSource ,这通常在不同设备上会运行不同的 frame source。这里我们使用 EasyAR Sense > Motion Tracking > Frame Source Group : AR Foundation First 来创建一个 Frame Source Group ,session使用的 frame source 会在运行时选择。你可以根据具体需求添加不同的 frame source 组或单个 frame source 到session中。

../_images/image_g1_22.png

在添加 frame source 之后,你需要添加 session 需要使用的 frame filter。使用 EasyAR Sense > Image Tracking > Frame Filter : Image Tracker 在session中添加一个 ImageTrackerFrameFilter

../_images/image_g1_24.png

有时你需要在设备上录制 input frame 然后在PC上回放,以便在 Unity 编辑器中诊断问题,这时你可以在session中添加 FramePlayerFrameRecorder 。(当然,如果要使用这些功能的话,你需要根据情况修改 FrameSource.FramePlayerFrameSource.FrameRecorder 。)

../_images/image_g1_25.png

然后在创建出来的 ImageTrackerFrameFilter 上打开运动跟踪。

../_images/image_g9_1.png

如果你需要在没有运动跟踪能力的设备上跟踪可以退变为普通的跟踪,只需要使用 EasyAR Sense > Image Tracking > Frame Source : Camera Device (Object Sensing) 简单地在frame source组的最后添加一个新的 CameraDeviceFrameSource 即可。

../_images/image_g9_2.png ../_images/image_g9_3.png

Target 限制

使用运动融合的target有两个需要注意的地方,

  1. Target的缩放比例 ( ImageTarget.scaleObjectTarget.scale ,或 TargetController 的输入 ImageTargetController.ImageFileSourceData.ScaleObjectTargetController.ObjFileSourceData.Scale )必须与真实世界中的物体一致。

  2. 目标图像或物体在真实世界中不能移动。

可以参考 ImageTracking_MotionFusion 样例来了解更多详情。